package getFileText;

import java.io.File;
import java.io.IOException;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import batching.*;
import analyseText.WeiboFenXi;
public class GetText {
	
	
	/**对Statuses文件夹下的文件格式（能处理类似格式的JSON数据）进行批处理
	 * @param dir (String) Statuses文件夹的绝对路径
	 * @param dest (String) Statuses文件夹分析的目的路径
	 * @param fileName (String)文件的部分标识名字
	 * @return void
	 * */
	public void getMuchStatusesText(String dir, String dest,String fileName){
		TextBatch p=new TextBatch();
		WeiboFenXi w=new WeiboFenXi();
		File fileDir = new File(dir);
		File[] textFiles = fileDir.listFiles();
		String content = null;		
		String fileContent=null;
		for (int i = 0; i < textFiles.length; i++) {
			
			if (textFiles[i].isFile()&& textFiles[i].getName().endsWith(".txt")) {
				
				try {
					content = p.fileToString(textFiles[i].getCanonicalPath());
//					fileContent=w.statusesTextStr(content);
					fileContent=w.statusesTextStr(content);
//					System.out.prmintln("``````"+fileContent);
					p.writeTxt(fileContent, dest + "\\"+fileName+i+ ".txt");
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	
	
	
	/**对微博数据的Users文件夹下的文件（能处理类似格式的JSON数据）进行批处理
	 * @param dir (String) Users文件夹的绝对路径
	 * @param dest (String) Users文件夹分析的目的路径 
	 * @param fileName (String)文件的部分标识名字
	 * @return void
	 * */
	public void getMuchUsersText(String dir, String dest,String fileName){
		TextBatch p=new TextBatch();
		WeiboFenXi w=new WeiboFenXi();
		File fileDir = new File(dir);
		File[] textFiles = fileDir.listFiles();
		String content = null;
		String fileContent=null;
		for (int i = 0; i < textFiles.length; i++) {
			
			if (textFiles[i].isFile()&& textFiles[i].getName().endsWith(".txt")) {
//				System.out.println("文件的路径是：" + textFiles[i].getAbsolutePath());
//				System.out.println("文件的名称是：" + textFiles[i].getName());
				try {
					content = p.fileToString(textFiles[i].getCanonicalPath());
//					System.out.println(content);
					fileContent=w.userTextStr(content);
//					System.out.println(fileContent);
					p.writeTxt(fileContent, dest +"\\"+fileName+i+ ".txt");
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	
/*----------------------------------------------分割线------------------------------------------------------*/
	
	/**混合id的分类处理，用来处理老师给的特殊文本
	 * 对Statuses文件夹下的文件格式（能处理类似格式的JSON数据）进行批处理
	 * @param dir (String) Statuses文件夹的绝对路径
	 * @param dest (String) Statuses文件夹分析的目的路径
	 * @param fileName (String) 创建新的文件的标识名称
	 * */
	public void getMuchStatusesTextById(String dir, String dest,String fileName){
		TextBatch p=new TextBatch();
		WeiboFenXi w=new WeiboFenXi();
		File fileDir = new File(dir);
		File[] textFiles = fileDir.listFiles();
		String content = null;		
		
		//JSON数据分析
		JSONArray data;
		StringBuffer sb1 = new StringBuffer();
		StringBuffer sb2=new StringBuffer();
		String id=null;
		String preId=null;
		
		//逐个处理文件下的所有文本文件
		for (int i = 0; i < textFiles.length; i++) {
			
			if (textFiles[i].isFile()&& textFiles[i].getName().endsWith(".txt")) {
				
				try {
					//将文本文件转换为字符串
					content = p.fileToString(textFiles[i].getCanonicalPath());
//					fileContent=w.statusesTextStr(content);
//					fileContent=w.statusesTextStrById(content);
//					System.out.prmintln("``````"+fileContent);
					data = new JSONArray(content);
					//将获得的字符串按照id进行写入不同的文本中
					for(int j=0;j<data.length();j++){
						JSONObject info=data.getJSONObject(j);
						String text=info.getString("text");
						JSONObject user=info.getJSONObject("user");
						id=user.getString("id");
//						String location=user.getString("location");
						//获取昵称+text格式的数据
//						String name=user.getString("name");
						
//						System.out.println(id+"\t"+name+"\t"+text);
						//对文本读到的每条记录都进行id比较，进行筛选
						
						if(preId!=null && id.compareTo(preId)!=0 && id!= null){
							//调用p.writeTxt方法
							p.writeTxt(sb1.toString(), dest + "\\"+fileName+preId+ ".txt");
							sb1.delete(0, sb1.length()-1);
						}
						preId=id;
						sb1.append(text);
						sb1.append("\n");
					}
					
				} catch (IOException e) {
					e.printStackTrace();
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}


	/**混合id的分类处理，用来处理老师给的特殊文本
	 * 对Statuses文件夹下的文件格式（能处理类似格式的JSON数据）进行批处理。同时去掉"转发微博"字段。
	 * @param dir (String) Statuses文件夹的绝对路径
	 * @param dest (String) Statuses文件夹分析的目的路径
	 * @param fileName (String) 创建新的文件的部分标识名称
	 * */

	public void getMuchStatusesTextByIdFilter(String[] textFilter,
			String dir, String dest, String fileName) {
		
		TextBatch p=new TextBatch();
		WeiboFenXi w=new WeiboFenXi();
		File fileDir = new File(dir);
		File[] textFiles = fileDir.listFiles();
		String content = null;		
		
		//JSON数据分析
		JSONArray data;
		StringBuffer sb1 = new StringBuffer();
		StringBuffer sb2=new StringBuffer();
		String id=null;
		String preId=null;
		
		//逐个处理文件下的所有文本文件
		for (int i = 0; i < textFiles.length; i++) {
			
			if (textFiles[i].isFile()&& textFiles[i].getName().endsWith(".txt")) {
				
				try {
					//将文本文件转换为字符串
					content = p.fileToString(textFiles[i].getCanonicalPath());
//					fileContent=w.statusesTextStr(content);
//					fileContent=w.statusesTextStrById(content);
//					System.out.prmintln("``````"+fileContent);
					data = new JSONArray(content);
					//将获得的字符串按照id进行写入不同的文本中
					for(int j=0;j<data.length();j++){
						JSONObject info=data.getJSONObject(j);
						String text=info.getString("text");
						JSONObject user=info.getJSONObject("user");
						id=user.getString("id");
//						String location=user.getString("location");
						//获取昵称+text格式的数据
//						String name=user.getString("name");
						
//						System.out.println(id+"\t"+name+"\t"+text);
						
						//对文本读到的数据进行特殊字段过滤，eg:过滤"转发微博字段"。
						
						//对文本读到的每条记录都进行id比较，进行筛选
						if((text.compareTo(textFilter[0])!=0) && (text.compareTo(textFilter[1])!=0) && 
								(text.compareTo(textFilter[2])!=0) && (text.compareTo(textFilter[3])!=0)){
							
							if(preId!=null && id.compareTo(preId)!=0 && id!= null){
								//调用p.writeTxt方法
								p.writeTxt(sb1.toString(), dest + "\\"+fileName+preId+ ".txt");
								sb1.delete(0, sb1.length()-1);
							}
							preId=id;
							sb1.append(text);
							sb1.append("\n");
						}
					}
					
				} catch (IOException e) {
					e.printStackTrace();
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
	}
	
	
//	public static void main(String[] args) {
//		GetText g=new GetText();
//		String dirUsers="E:\\WordSplit\\WeiBoWenBen\\weibo_datas\\SinaNormalRobot\\Users";
//		String destUsers="E:\\WordSplit\\WeiBoWenBen\\weibo_datas\\SinaNormalRobot\\Users数据分析";
//		String fileNameUsers="text字段分析";
//		g.getMuchUsersText(dirUsers, destUsers, fileNameUsers);
//		
////		String dirStatuses="E:\\WordSplit\\WeiBoWenBen\\weibo_datas\\SinaNormalRobot\\Statuses";
////		String destStatuses="E:\\WordSplit\\WeiBoWenBen\\weibo_datas\\SinaNormalRobot\\Statuses按照id分析数据";
////		String fileNameStatuses="text字段分析";
////		g.getMuchStatusesTextById(dirStatuses, destStatuses, fileNameStatuses);
//		
//	}

}
